/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sorting;

/**
 *
 * @author Akram Mellice
 */
public class Sort<T extends Comparable> implements Sortable {
 
    protected T[] array;
    protected Class<T> classType;

    public Sort(T[] array, Class<T> classType) {
        if (array == null) {
            throw new NullPointerException();
        }
        if (array.length > 0) {
            if (!classType.isInstance(array[0])) {
                throw new ClassCastException();
            }
        }
        this.array = array;
        this.classType = classType;
    }

    /**
     * If not overridden, the methods heuristic will choose specific sorting algorithm based on the nature of the input array 
     */
    public void sort() {        
    }
}
